package br.com.diego.system.view.action.componente;

import br.com.diego.system.controller.cadastrocomponente.ComponenteVo;
import br.com.diego.system.controller.consultacomponente.ConsultaComponenteBuilder;
import br.com.diego.system.controller.consultacomponente.ConsultaComponenteFactory;
import br.com.diego.system.controller.consultacomponente.ConsultaComponenteVo;
import br.com.diego.system.view.action.AbstractDiegoAction;
import br.com.diego.system.view.navigator.Navigator;
import br.com.diego.system.view.navigator.componente.Pages;
import javax.faces.event.ActionEvent;
import org.springframework.beans.factory.annotation.Autowired;

public class ConsultaComponenteAction extends AbstractDiegoAction {

    @Autowired
    private ConsultaComponenteFactory consultaComponenteFactory;
    
    @Autowired
    private ConsultaComponenteBuilder consultaComponenteBuilder;    
    
    @Autowired
    private CadastroComponenteAction cadastroComponenteAction = new CadastroComponenteAction();
    
    private ConsultaComponenteVo consultaComponenteVo = new  ConsultaComponenteVo();
    
    private ComponenteVo componenteVo = new ComponenteVo();
    
    public void consultar(){
        try {
            consultaComponenteVo.setComponenteVoList(consultaComponenteBuilder.consultar(consultaComponenteVo));
            consultaComponenteVo.setFiltro(null);
        } catch (IllegalArgumentException e) {
            setMensagem(e.getMessage());
        }
    }
    
    public void limpar() {
        consultaComponenteVo = new ConsultaComponenteVo();
    }
    
    public String redirecionar() {
        if (Navigator.getPage().equals(Pages.cadastroComponente.name())) {
            carregarCadastroComponente();
            Navigator.setPage("");
            return Pages.cadastroComponente.name();            
                 
        } else {            
            return Pages.consultaComponente.name();           
        }
    }   
    
    public void retornar(ActionEvent event) {
        componenteVo = (ComponenteVo) event.getComponent().getAttributes().get("componente");        
        componenteVo = consultaComponenteBuilder.retornar(componenteVo);
    }

    public void carregarCadastroComponente(){
        cadastroComponenteAction.getCadastroComponenteVo().setComponenteVo(componenteVo);
    }

    public ComponenteVo getComponenteVo() {
        return componenteVo;
    }

    public void setComponenteVo(ComponenteVo componenteVo) {
        this.componenteVo = componenteVo;
    }

    public ConsultaComponenteVo getConsultaComponenteVo() {
        return consultaComponenteVo;
    }

    public void setConsultaComponenteVo(ConsultaComponenteVo consultaComponenteVo) {
        this.consultaComponenteVo = consultaComponenteVo;
    }
   
}
